<%--
  Created by IntelliJ IDEA.
  User: 纸萌
  Date: 2023/3/21
  Time: 16:19
  To change this template use File | Settings | File Templates.
--%>

<%--配置指令--%>
<%@ page import="java.util.Map" %>
<%@ page import="java.util.HashMap" %>
<%@ page contentType="text/html;charset=UTF-8"
         language="java"
%>

<%--缓冲区满了是否自动刷新--%>
<%--autoFlush="true"--%>
<%--缓冲--%>
<%--buffer="8kb"--%>
<%--错误时显示  映射到webapp目录--%>
<%--errorPage="/error500.jsp"--%>
<html>
<head>
    <title>Title</title>
</head>
<body>
<%--声明属性--%>
<%!
    private Integer id;
    private String name;
    private static Map<String, Object> map;
%>
<%--声明static静态代码块--%>
<%!
    static {
        map = new HashMap<>();
        map.put("key1", "value1");
    }
%>
<%--声明类方法--%>
<%!
    public int aaa() {
        return 11;
    }
%>
<%--声明内部类--%>
<%!
    public static class A {
        private Integer id = 12;
        private String abc = "abc";
    }
%>

<%--表达式输出--%>
<%= 12 %><br>
<%= 12.13 %><br>
<%= "字符串" %><br>
<%= request.getParameter("username") %><br>
<%--表达式不能以分号结尾--%>

<%--代码脚本--%>
<%
    int i = 12;
    if (i == 12) {
        System.out.println("代码脚本if内");
    } else {
        System.out.println("代码脚本if外");
    }
%>
<%
    for (int j = 0; j < 10; j++) {
        System.out.println("循环内");
    }
%>
<%
    String username = request.getParameter("username");
%>

<%--九大对象--%>
<%--
request 请求对象
response 响应对象
pageContext jsp上下文对象
session 会话对象
application ServletContext对象
config ServletConfig对象
out jsp输出流对象
page指向当前jsp对象
isErrorPage="true"开启异常对象 Throwable exception
--%>

<%--四大域对象--%>
<%--
pageContextImpl(PageContextImpl类)  当前jsp页面范围内有效
request(HttpServletRequest类)       一次请求内有效
session(HttpSession类)              一个会话范围内有效(浏览器运行时)
application(ServletContext类)       整个web工程范围内都有效(web工程运行时)
--%>
<%
    pageContext.setAttribute("key", "pageContext");
    request.setAttribute("key", "request");
    session.setAttribute("key", "session");
    application.setAttribute("key", "application");
%>
pageContext是否有值:<%pageContext.getAttribute("key");%><br>
request是否有值:<%request.getAttribute("key");%><br>
session是否有值:<%session.getAttribute("key");%><br>
application是否有值:<%application.getAttribute("key");%><br>

<%-- out的输出 --%>
<%--
response与out各在自己的缓冲区
1.执行out.flush() 会把out缓冲区数据放到response缓冲区末尾
2.会执行response刷新操作，把全部数据写给客户端（输出）
--%>
<%
    response.getWriter().write("response输出1 <br/>");
    response.getWriter().write("response输出2 <br/>");
    out.write("out输出1 <br/>");
    out.write("out输出2 <br/>");
%>

<%--out.write与print方法的区别--%>
<%
//    只适合输出字符串
//    实际 (char)write 值转为了ASK码
//    print实际将所有数据类型转为字符串后调用write
    out.print(12);
%>


</body>
</html>



























